-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a proper sqlite3 database to RootPythia #44
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…in DummyDBManager
@ZynoXelek could you take a look? |
ZynoXelek
reviewed
Mar 11, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What I didn't comment was clear and looks good to me.
Once my questions will be answered, I will approve this PR.
ZynoXelek
approved these changes
Aug 31, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I replaced the
DummyDBManager
by a "real"DatabaseManager
which initializes (in_init_db
) and uses a database file$DB_FOLDER/RootPythia.db
, configurable by environment variable. I also moved it to a separatedsrc/database
sub directory.All SQL queries templates are stored in
database/db_structure.py
(which could as well be nameddb_queries
), and the bot is safe from SQLi because I only used the sqlite3 safe substitution using?
in queries.The API hasn't change, apart from the class name, so the tests with slight changes still pass which gives me strong confidence in the bot working well.
The Database is currently only composed of one
users
table which stores exactly the same information that the previous python list stored. Improving this, is outside of the scope of this PR and will be done later as well as other bug fixes (rank and score that don't change when fetching new challenges). TheDatabaseManager
still returnsUser
s objects to comply with other classes APIs, the conversion from the DB data to theUser
object (and vice versa) has been done thanks to slight additions to theUser
class to be developer-friendly.I mainly used this tutorial: https://www.sqlitetutorial.net/sqlite-python/